package test2

import org.apache.spark.{SparkConf, SparkContext}

object Demo1 {

  def main(args: Array[String]): Unit = {

    // 创建 SparkConf 和 SparkContext 对象
    var conf = new SparkConf().setAppName("myapp").setMaster("local")  // 程序运行模式为本地模式
    var sc = new SparkContext(conf)  // 创建Spark对象

    // 统计每日新增用户

    // 创建 RDD 并填充数据
    var rdd1 = sc.parallelize(
      Array(
        ("2023-05-09","user1"),("2023-05-09","user2"),
        ("2023-05-09","user3"),("2023-05-08","user2"),
        ("2023-05-08","user2"),("2023-05-07","user2"),
        ("2023-05-07","user1"),("2023-05-07","user2")
      )
    )
//    var rdd1 = sc.textFile("data/input/date.txt")
//    var rdd2 = rdd1.map(x => (x.split(" ")(1), x.split(" ")(0)))
    // 将日期和用户交换位置，后面需要按日期分组
    var rdd2 = rdd1.map(kv=>(kv._2,kv._1))

    // 按用户分组，得到一个 Key-Value Pair 的 RDD，其中 Key 是用户，Value 是该用户登录的日期列表
    var rdd3 = rdd2.groupByKey()

    // 对于每个用户，找到他们登录的日期的最小值，并将它们映射到 (日期, 1) 的 KeyValue Pair 上
    var rdd4 = rdd3.map(kv=>(kv._2.min, 1))

    // 统计每个日期对应的用户数量并输出结果
    rdd4.countByKey().foreach(println)
//    rdd4.saveAsTextFile("hdfs://192.168.10.100:8020/wh/data2")
  }
  /*(2022-09-17,3)
  (2022-09-18,1)
  (2022-09-19,2)*/

  /*(2023-05-07,2)
  (2023-05-09,1)*/
}
